package com.tmt.im.service.controller.vo;

import com.fasterxml.jackson.annotation.JsonProperty;
import com.tmt.springboot.common.annotation._ReflectInvoked;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.experimental.SuperBuilder;

import java.io.Serial;
import java.io.Serializable;

/**
 * 群成员信息
 *
 * @Description TODO
 * @Author wuyi
 * @Date 2024/8/7 11:34
 * @Version 1.0
 **/
@Getter
@Setter
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
@Tag(name="MemberInfo", description = "群成员信息")
public class MemberInfo implements Serializable {

    @Serial
    private static final long serialVersionUID = 4431817413637120954L;

    @Schema(name="id", description = "用户ID")
    @JsonProperty("userId")
    private Long id;

    @Schema(name="nickname", description = "用户本身的昵称")
    @JsonProperty("name")
    private String nickname;

    @Schema(description = "用户的群昵称")
    @JsonProperty("userGroupName")
    private String memberNick;

    @Schema(description = "成员的会员编号")
    private String memberCode;

    @Schema(description = "当前用户对本成员好友的备注")
    private String remark;

    @Schema(name="avatar", description = "用户头像URL")
    private String avatar;

    @Schema(description = "成员的群角色：群主1 管理员2 普通成员3")
    @JsonProperty("rankState")
    private int roleInSession;

    @Schema(name="chatBanned", description = "该用户在群中是否已被禁言")
    @JsonProperty("shutupState")
    private boolean chatBanned;

    @Schema(name="forbidRedPackage", description = "该用户在群中是否已被禁止抢手气红包")
    @JsonProperty("forbidState")
    private boolean forbidRedPackage;

    @Schema(name="doNotDisturb", description = "该用户在群中是否开启了免打扰")
    private boolean doNotDisturb;

    @Schema(name="holdInTop", description = "该用户是否将群设置为了置顶")
    private boolean holdInTop;

    @Schema(description = "邀请人群昵称，没有设置则默认为用户的昵称")
    @JsonProperty("inviteName")
    private String inviterName;

    @Schema(description = "邀请人的会员编码")
    @JsonProperty("inviteMemberCode")
    private String inviterMemberCode;

    @Schema(name="syncYunXin", description = "该用户是否存在于云信平台该群组的成员列表中")
    private Boolean syncYunXin;

}
